草庐IT

Android PlusOneButton 不初始化

全部标签

c++ - 如何初始化值为结构的类的私有(private)成员静态映射?

我有一个类,它的私有(private)成员是一个静态映射:ClassDevices{...private:structDevicePair{intnCtr;boolisToAdd;};DevicePairm_DevPair;staticmapm_SYSdeviceMap;};为什么我不能只在cpp文件中这样做?mapDevices::m_SYSdeviceMap;如何在cpp文件中初始化它? 最佳答案 用这一行:mapDevices::m_SYSdeviceMap;此外,作为一种良好的编码习惯,请从header中删除usingnam

c++ - 在 C++11 中哪些临时对象不能用 `someType()` 初始化?

我有一些对类型和初始值进行操作的宏。我需要将初始值vIni转换为vType(vIni总是可转换为vType,有时它有同一类型)。vIni也可能为空,在这种情况下,vType应该未初始化或默认初始化。结果传递给模板化函数。简而言之,templatevoidfoo(constT&o);foo(vType(vIni));foo(vType());必须编译。我已经发现foo(unsignedint())或foo(int*())无法编译,但可以使用typedef解决。还有哪些其他情况(除了带有空格和指针的内置类型)会失败? 最佳答案 简短(稍

C++11 seed_seq 初始化

头文件允许初始化种子序列的内部序列。seed_seq类的对象可以通过多种方式构建。我对其中一种方法很好奇,特别是使用了什么C++技术。我在这里查看网站:http://www.cplusplus.com/reference/std/random/seed_seq/seed_seq/在示例部分,我看到了这一行:std::seed_seqseed2={102,406,7892};这里究竟发生了什么?似乎正在将一个类对象分配给一个数组。我查看了初始化列表构造、复制赋值构造函数,但我仍然对到底发生了什么感到困惑。我明白了std::seed_seqseed3(foo.begin(),foo.end

c++ - 动态初始化

C++03标准[basic.start.init]第3点指出:Itisimplementation-definedwhetherornotthedynamicinitialization(8.5,9.4,12.1,12.6.1)ofanobjectofnamespacescopeisdonebeforethefirststatementofmain.Iftheinitializationisdeferredtosomepointintimeafterthefirststatementofmain,itshalloccurbeforethefirstuseofanyfunctionoro

C++ 创建对象、初始化列表与赋值?

我最近与一位friend讨论,他们说在C++中创建对象时使用初始化列表(而不是简单地分配数据成员)会提高性能。这是为什么(如果是真的)?我找到了这个页面:http://www.parashift.com/c++-faq/init-lists.html他们提到了临时对象,但我认为最近的编译器可以避免这种情况? 最佳答案 使用赋值时,对象是在您进行赋值之前默认构造的。如果构造和复制一个对象是昂贵的操作,你至少应该去掉其中的一个。初始化列表摆脱了额外的复制操作。复制构建允许同时执行这两项操作。

c++ - constexpr、数组和初始化

C++世界中是否有任何东西可以使我尝试做的事情成为可能?templatestructarray{constexprTbuf[Size];constexprsize_tsize()const{returnSize;}};templateconstexprarraypush_back(arrayconst&arr,Tconst&val){arrayarr_out={{arr.buf,val}};returnarr_out;}我想做的是创建一个用另一个数组中的数据初始化的新数组,并在末尾放置一个新元素。减去constexpr我可以通过在push_back函数中循环初始化来让它工作。看起来你不

c++ - 如何初始化一个私有(private)嵌套类类型的静态字段?

Outer.hpp:classOuter{classInner{Inner(){}};staticInnerinner;}Outer.cpp(在顶层,例如不在函数体内):Outer::InnerOuter::inner;我收到以下错误:errorC2248:'Outer::Inner::inner':cannotaccessprivatememberdeclaredinclass'Outer::Inner'我没有使用完全符合C++11(VisualStudio2010)的编译器,因此无法在声明时定义字段。 最佳答案 诀窍是让Oute

c++ - 常规初始化中的意外转换

Clang3.2报错如下代码,不明白为什么会出问题。该错误仅发生在模板函数中,并且仅在使用大括号进行初始化时发生。其他两个初始化按预期工作。structfoo{foo(){}~foo()=default;//deletedfoo(constfoo&rhs)=delete;foo(foo&&rhs)noexcept=delete;autooperator=(constfoo&rhs)->foo&=delete;autooperator=(foo&&rhs)noexcept->foo&=delete;};templatevoidbar(){fooa;//OKfoob{};//ERROR}i

c++ - vector<bool> 可以由 int 初始化吗

我想枚举[0,31]的bool表示并将其存储在tries中供以后使用。staticconstintN=5;vectortries(N);for(inti=0;iinitializedbyint?//soIdon'thavetodobitoperationfor(intt=0;t 最佳答案 std::vector不能这样做,但是std::bitset能够。由于vector的大小在您的情况下是恒定的,因此您应该使用std::bitset.只需使用您想要的非负整数值对其进行初始化即可。请注意bitset不提供(或模仿)Container接

c++ - 原始类型初始化的构造函数语法和赋值语法之间的差异

这个问题在这里已经有了答案:Isthereadifferencebetweencopyinitializationanddirectinitialization?(9个回答)关闭9年前。阅读同事编写的一些代码时,我无意中发现了使用构造函数语法来初始化基本类型变量的方法。即如下所示:#includeintmain(){usingnamespacestd;//initializedusingassignementsyntax(copyinitialisation)inttiti=20;cout我的自然倾向是坚持使用赋值语法,因为它是历史悠久的语法,很容易理解,并且存在明显的兼容性问题(构造